Apache Tapestry-তে Event Handlers এবং Listeners এমন মেকানিজম যা ব্যবহারকারীর ইনপুট বা অন্য কোনো কার্যক্রমের প্রতিক্রিয়া হিসেবে অ্যাপ্লিকেশনের মধ্যে ক্রিয়া সম্পাদন করতে ব্যবহৃত হয়। এটি টেমপ্লেট এবং জাভা ক্লাসের মধ্যে ইন্টিগ্রেশন এবং ইউজার ইন্টারঅ্যাকশন হ্যান্ডলিংয়ের জন্য অত্যন্ত গুরুত্বপূর্ণ।
Tapestry-তে ইভেন্ট হ্যান্ডলিং সাধারনত page বা component এর সাথে সম্পর্কিত ইভেন্টের জন্য কোড পরিচালনা করার মাধ্যমে করা হয়। যখন কোনো ইভেন্ট ট্রিগার হয়, তখন নির্দিষ্ট listener method কল করা হয় যা ইভেন্টের জন্য নির্দিষ্ট কাজ সম্পন্ন করে।
Event Handler:
Event Handler সাধারণত on<event>
ফরম্যাটে লেখা হয়। যেমন, একটি বাটনে ক্লিক করার জন্য onClick
ইভেন্ট হ্যান্ডলার ব্যবহার করা যায়।
public Object onClick() {
// বাটন ক্লিক হওয়ার পর যে কাজ করতে চান তা এখানে লিখুন
return SuccessPage.class; // এই পেজে রিডাইরেক্ট হবে
}
Event Listener:
ইভেন্ট লিসেনার মেথড সাধারণত কোনো নির্দিষ্ট ইভেন্টের জন্য তৈরি করা হয়, যেমন onActivate
বা onPassivate
।
public void onActivate() {
// পেজ অ্যাকটিভেট হওয়ার সময় যে কাজ করতে চান তা এখানে লিখুন
}
ধরা যাক, আপনি একটি লগইন ফর্ম তৈরি করতে চান, যেখানে ব্যবহারকারী যদি সঠিক তথ্য প্রদান করে, তাহলে তাকে হোম পেজে রিডাইরেক্ট করা হবে। এই ক্ষেত্রে, একটি Event Handler ব্যবহার করতে হবে।
HTML টেমপ্লেট (login.tml):
<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_3.xsd">
<head>
<title>Login Form</title>
</head>
<body>
<h2>Login</h2>
<form>
<t:label value="Username" for="username" />
<t:textfield value="username" t:id="username" />
<t:label value="Password" for="password" />
<t:passwordfield value="password" t:id="password" />
<t:button value="Login" t:id="loginButton" />
</form>
</body>
</html>
Java ক্লাস (Login.java):
package com.example.pages;
import org.apache.tapestry5.annotations.Property;
import org.apache.tapestry5.annotations.SessionState;
import org.apache.tapestry5.ioc.annotations.Inject;
public class Login {
@Property
private String username;
@Property
private String password;
@SessionState
private boolean loggedIn;
// Login action
public Object onSuccessFromLoginForm() {
if ("admin".equals(username) && "password".equals(password)) {
loggedIn = true; // User is logged in
return Home.class; // Redirect to home page
} else {
return Login.class; // Stay on login page if credentials are wrong
}
}
}
এখানে:
onSuccessFromLoginForm()
হল একটি Event Handler যা লগইন ফর্মটি সফলভাবে সাবমিট হলে কল হয়। এই মেথডটি ইউজারের ইনপুট যাচাই করে এবং সঠিক হলে হোম পেজে রিডাইরেক্ট করে, অন্যথায় লগইন পেজে থাকে।onActivate:
যখন পেজ অ্যাকটিভেট হয়, তখন onActivate()
ইভেন্ট কল হয়। এটি সাধারণত পেজ লোড হওয়ার সময় ডেটা ফেচ করতে ব্যবহার হয়।
public void onActivate() {
// When the page is activated, perform necessary actions
}
onPassivate:
যখন পেজ বা কম্পোনেন্টটি আউটপুটে থাকে, তখন onPassivate()
কল হয়। এটি সাধারণত পেজ স্টেট সংরক্ষণ করতে ব্যবহৃত হয়।
public void onPassivate() {
// Save state before passivation
}
onEvent:
নির্দিষ্ট UI component-এর জন্য ইভেন্ট পরিচালনা করতে onEvent()
ব্যবহার করা হয়, যেমন button click।
public Object onEventFromButton(String event) {
// Perform some action on event
return null;
}
Tapestry ইভেন্টের সাথে প্যারামিটারও পাস করতে পারে। উদাহরণস্বরূপ, আপনি যদি একটি বাটনের ক্লিক ইভেন্টে প্যারামিটার পাস করতে চান:
public Object onClickFromSubmitButton(String parameter) {
// Parameter ব্যবহার করে নির্দিষ্ট লজিক প্রয়োগ করা
return SuccessPage.class;
}
এখানে, parameter
প্যারামিটারটি ইভেন্ট ট্রিগার করার সময় পাঠানো হবে।
Event Handlers এবং Listeners Tapestry অ্যাপ্লিকেশনগুলির ইভেন্ট-ড্রিভেন আচরণ নিশ্চিত করতে ব্যবহৃত হয়। Event Handlers ব্যবহারকারী বা সিস্টেমের কোনো নির্দিষ্ট ক্রিয়ার (যেমন, বাটন ক্লিক বা ফর্ম সাবমিট) প্রতিক্রিয়া হিসেবে কার্যক্রম সম্পাদন করে, এবং Listeners সেই ইভেন্টগুলোর শোনার কাজ করে। Tapestry-তে ইভেন্ট হ্যান্ডলিং সহজ এবং নমনীয়, যা ডেভেলপারদের দ্রুত এবং কার্যকর অ্যাপ্লিকেশন তৈরি করতে সহায়ক।
Read more